#pragma once
#include <iostream>
#include <string>
#include <sstream>
using namespace std;

template<class T>
class NodoDoble
{
private:
	NodoDoble* siguiente;
    NodoDoble* anterior;
	T* info;

public:
	NodoDoble(NodoDoble*, T *, NodoDoble*);
	virtual ~NodoDoble();

	virtual NodoDoble* getSigNodo();
	virtual T* getInfo();
	void setSigNodo(NodoDoble *);
    void setAntNodo(NodoDoble *);
    NodoDoble* getAntNodo();
	void setInfo(T *);
};

template<class T>
NodoDoble<T>::NodoDoble(NodoDoble<T>* anterior, T* info,NodoDoble<T>* siguiente )
{
    this->siguiente = siguiente;
    this->info = info;
    this->anterior = anterior;
}

template<class T>
NodoDoble<T>::~NodoDoble(){}

template<class T>
NodoDoble<T>* NodoDoble<T>::getSigNodo()
{
	return siguiente;
}

template<class T>
NodoDoble<T>* NodoDoble<T>::getAntNodo()
{
    return anterior;
}

template<class T>
T* NodoDoble<T>::getInfo()
{
	return info;
}

template<class T>
void NodoDoble<T>::setSigNodo(NodoDoble<T> * nod){

	siguiente=nod;
}

template<class T>
void NodoDoble<T>::setAntNodo(NodoDoble* ant)
{
    anterior= ant;
}

template<class T>
void NodoDoble<T>::setInfo(T * inf){

	info=inf;

}



